-
Notifications
You must be signed in to change notification settings - Fork 213
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add k8sattributesprocessor to otlp pipeline with workload type detection #1524
Open
musa-asad
wants to merge
12
commits into
feature-custom-metrics-entity
Choose a base branch
from
k8s-attr
base: feature-custom-metrics-entity
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
musa-asad
changed the title
Add k8sattributesprocessor to k8s otlp pipeline with workload type detection
Add k8sattributesprocessor to otlp pipeline with workload type detection
Feb 3, 2025
This reverts commit 74b183d.
It looks like the sample application I used return |
musa-asad
requested review from
JayPolanco and
duhminick
and removed request for
JayPolanco
February 3, 2025 07:00
duhminick
reviewed
Feb 3, 2025
duhminick
reviewed
Feb 3, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of the issue
To support the Explore related feature in CloudWatch, the CloudWatch Agent sends an "Entity", which includes relevant metadata to correlate metrics or logs between resources (e.g., an EKS cluster) and services (e.g., a Java application). When the CloudWatch Agent runs in a Kubernetes cluster, we need to collect the namespace, workload name, and node name to populate the "Entity".
However, we currently only get Kubernetes metadata when Application Signals is enabled. For OTLP custom metrics, if Application Signals isn't configured, then we don't have a way to fetch Kubernetes metadata. To achieve this, we must implement the Kubernetes Attributes Processor within the CloudWatch Agent.
Additionally, the process of fetching metadata with the Kubernetes Attributes Processor depends on the agent's workload type:
If the agent is running as a daemonset, we must configure a node filter. This prevents the agent from fetching metadata for pods on other nodes.
Hence, we must also implement workload type detection.
Description of changes
Revision 1
getWorkloadType()
intranslator/util/eksdetector/eksdetector.go
to query Kubernetes API withPOD_NAME
andK8S_NAMESPACE
environmental variables and retrieve workload type from pod information.Workload
value inIsEKSCache
.IsEKSCache
to use inDetectWorkloadType()
to return workload type.translator/context/context.go
.config-translator
binary.Revision 2
SetWorkloadType()
.getWorkloadType()
."Unknown"
to""
ingetWorkloadType()
since it serves no functional purpose.License
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Tests
OTEL_EXPORTER_OTLP_ENDPOINT
tohttp://cloudwatch-agent.amazon-cloudwatch:4317
.make docker-build-amd64
and changed the image in the AmazonCloudWatchAgent custom resource.Kubernetes Attributes Processor
Debug Exporter Output:
K8s Metadata:
Entity Fields:
EMF Output:
K8s Metadata:
Workload Type Detection
DaemonSet:
Deployment:
Requirements
Before commit the code, please do the following steps.
make fmt
andmake fmt-sh
make lint